package com.wudl.govern.service;

import cn.hutool.system.UserInfo;
import com.alibaba.fastjson.JSONObject;
import com.wudl.govern.domain.ControlTask;
import org.springframework.validation.BindingResult;

import java.util.List;
import java.util.Map;

/**
 * @author ：wudl
 * @date ：Created in 2022-04-05 12:05
 * @description：
 * @modified By：
 * @version: 1.0
 */

public interface ControlTaskService {

    /**
     * 按条件分页查询
     *
     * @param controlTask author ：qunan
     *                    date ：2018/12/3
     * @return
     */
    List<Map<String, Object>> selectPage(ControlTask controlTask);

    /**
     * 修改一条记录
     *
     * @param record
     * @param bindingResult 校验结果
     * @return
     */
    Object updateOne(ControlTask record, BindingResult bindingResult, UserInfo userInfo);

    /**
     * 删除一条质量监控任务
     *
     * @param taskId
     * @return
     * @Prarm executionWay 执行方式
     */
  String deleteOne(Integer taskId);

    /**
     * 新增一条记录
     * author ：qunan
     * date：2018/12/3
     *
     * @param record
     * @param bindingResult
     * @return
     */
    Object insertOne(ControlTask record, BindingResult bindingResult, UserInfo userInfo);


    /**
     * 根据id查询一条数据
     * author ：qunan
     * date ：2018/12/3
     *
     * @param taskId
     * @return
     */
    ControlTask selectOne(Integer taskId);

    /**
     * 启动定时任务
     * author ：qunan
     * date ：2018/12/7
     *
     * @param taskId
     * @return
     * @Prarm executionWay 执行方式
     */
    Object startTask(Integer taskId);

    /**
     * 暂停调度任务
     * author ：qunan
     * date ：2018/12/7
     *
     * @param taskId
     * @return
     */
   String pauseTask(Integer taskId);


    /**
     * 查询调度任务记录
     *
     * @param params
     * @return
     */
  Map  selectTaskRecord(Map<String, Object> params);

    /***
     * 查询执行任务信息
     * @param jobId              jobId
     * @return
     */
    Map<String, Object> selectTaskInfo(String jobId);

    /***
     * 查询质量概览
     * @param param
     * @return
     */
    Object selectQualityOverview(JSONObject param);

    /**
     * 查询执行信息
     *
     * @param ids
     * @return
     */
    Map getJobInfo(String ids);

}